// 引入axios封装
import axios from 'axios'

// 创建axios实例
const service = axios.create({
    baseURL: import.meta.env.VITE_REQUEST_BASE_URL + "/api", // 所有的请求地址前缀部分 url = base url + request url
    timeout: 60000, // 请求超时时间毫秒
    withCredentials: true, // 异步请求携带cookie
    headers: {
        // 设置后端需要的传参类型
        "Content-Type": "application/json"
    }
})

// 请求拦截器 一般写法模式
service.interceptors.request.use(
    (response) => {
        return response // 请求成功则返回response
    },
    (error) => { // 请求失败则显示错误状态
        console.log('err' + error) // for debug
        return Promise.reject(error)
    }
)

// 响应拦截器
service.interceptors.response.use(
    response => {
        let res = response.data;
        // 如果是返回的文件
        if (response.config.responseType === 'blob') {
            return res
        }
        // 兼容服务端返回的字符串数据
        if (typeof res === 'string') {
            // res = res ? JSON.parse(res) : res
            return res
        }
        return res;
    },
    (error) => {
        console.log('err' + error) // for debug
        return Promise.reject(error)
    }
)

// 导出request
export default service
